home *** CD-ROM | disk | FTP | other *** search
- tITLE Color Sets screen color like BASIC COLOR statement
- ;W. A. Scrivens July, 1985
- ;Bruce Noblick January, 1987
-
- CSEG SEGMENT
- ASSUME CS:CSEG,DS:CSEG,ES:CSEG
- ORG 100H
- COLOR:
- MOV AH,CS:80H
- OR AH,AH
- JNZ FOREGND
- MOV DX,OFFSET TEXT
- MOV AH,9
- INT 21H
- RET
- FOREGND: MOV SI,81H
- CALL GETVAL
- JC NOMORE
- CMP DX,32
- CMP DX,32
- JNC BADCOL
- MOV DH,DL
- AND DH,10H
- AND DL,0FH
- MOV CL,3
- ROL DH,CL
- OR DL,DH
- MOV FGCOL,DL
- CALL GETVAL
- JC NOMORE
- CMP DX,8
- JNC BADCOL
- MOV CL,4 ;put in high order nibble
- ROL DL,CL
- OR DL,FGCOL ;form argument for INT 10H
- MOV FGCOL,DL
- CALL GETVAL
- JC NOMORE
- CMP DX,16
- JNC BADCOL
- MOV BOCOL,DL
- JMP SHORT NOMORE
- BADCOL: MOV DX,OFFSET COLMSG
- MOV AH,9
- INT 21H
- RET
- NOMORE: MOV AH,15
- INT 10H
- MOV AH,3
- INT 10H
- MOV CH,DH
- MOV CL,0
- MOV BH,FGCOL
- MOV AX,600H ;scroll up full window
- MOV DX,184FH ;lower right @ 24,79
- INT 10H
- BORDER: MOV AL,BOCOL ;get border color
- MOV DX,3D9H ;console output
- OUT DX,AL
- RET
-
- GETVAL: SUB DX,DX
- SUB AH,AH
- GV1: LODSB
- CMP AL,13
- STC
- JZ GVPX
- CMP AL,' '
- JZ GV1
- GV2: SUB AL,'0'
- CMP AL,10
- JNC GVEX
- MOV CX,DX
- ADD DX,DX
- ADD DX,DX
- ADD DX,CX
- ADD DX,DX
- ADD DX,AX
- LODSB
- CMP AL,13
- JZ GVPX
- CMP AL,' '
- JNZ GV2
- GVX: RET
- GVPX: PUSHF
- DEC SI
- POPF
- RET
- GVEX: CLC
- MOV DX,-1
- RET
- COLMSG DB 'Bad parameter$'
- FGCOL DB 0
- BOCOL DB 0
-
- CR EQU 0DH
- LF EQU 0AH
- TEXT: DB CR,LF
- DB 'Syntax: COLOR fg[ bg[ bo]]',CR,LF,LF
- DB 'Where: fg (Foreground) (0-31)',CR,LF
- DB ' bg (Background) (0-7)',CR,LF
- DB ' bo (Border) (0-15)',CR,LF,LF
- DB 'Color Definitions:',CR,LF,LF
- DB ' 0 8 16 24 Black',CR,LF
- DB ' 1 9 17 25 Blue',CR,LF
- DB ' 2 10 18 26 Green',CR,LF
- DB ' 3 11 19 27 Cyan',CR,LF
- DB ' 4 12 20 28 Red',CR,LF
- DB ' 5 13 21 29 Magenta',CR,LF
- DB ' 6 14 22 30 Yellow',CR,LF
- DB ' 7 15 23 31 White',CR,LF,LF
- DB ' 8-15 are high intensity colors',CR,LF
- DB ' 16-23 are blinking colors',CR,LF
- DB ' 24-31 are high intensity blinking colors'
- DB CR,LF,'$'
- CSEG ENDS
- END COLOR
- 16-23 are blinking colors